'''
将文件my_annotations.jsonl作为数据集上传到langfuse中，在这个文件中，每一行的数据有三个字段
outlines、user_input、label
outlines：是内容，相当于rag的内容
user_input：用户输入
label：期望的输出结果
'''
import json

from langfuse import Langfuse
# 加载 .env 到环境变量
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())
# 调整数据格式 {"input":{...},"expected_output":"label"}
# 将读取的数据集放入data中
data = []
with open("my_annotations.jsonl", "r", encoding="utf-8") as file:
    for line in file:
        # 将文件的每一行转成json
        example = json.loads(line.strip())
        item = {
            "input": {
                "outlines": example["outlines"],
                "user_input": example["user_input"]
            },
            "expected_output": example["label"]
        }
        data.append(item)
# 定义我的langfuse上的数据集名称
dataset_name = "my-dataset"
# 初始化客户端
langfuse = Langfuse()

# 创建数据集，如果已存在不会重复创建
try:
    langfuse.create_dataset(
        name=dataset_name,
        description="我的数据集",
        metadata={
            "author": "bml",
            "type": "demo"
        }
    )

except:
    # 出现异常不处理,避免重复创建数据集报错
    pass
# 考虑演示运行速度，只上传前50条数据
for item in data[:50]:
    langfuse.create_dataset_item(
        dataset_name=dataset_name,
        input=item["input"],  # 内容
        expected_output=item["expected_output"]  # 期望输出结果
    )
